// 导入CSS文件
import '../css/func2.css';
// 导入axios库
import axios from 'axios';

// API配置 - 匹配后端地址
const API_CONFIG = {
  TARGET_SCHOOL_API: 'http://localhost:8080/api/v1/students/temp-college',
  EXPORT_STUDENTS_API: 'http://localhost:8080/api/v1/students/college/export',
};

// 开启调试日志（便于排查数据流转）
const DEBUG_MODE = true;

// 工具函数：日志记录
function log(message, level = 'info') {
  if (DEBUG_MODE) {
    const timestamp = new Date().toISOString();
    console[level === 'error' ? 'error' : 'log'](`[${timestamp}] [${level}] ${message}`);
  }
};

// 工具函数：生成随机token
function generateToken() {
  // 生成一个基于时间戳和随机数的唯一token
  const timestamp = Date.now();
  const randomStr = Math.random().toString(36).substring(2, 10);
  return `token_${timestamp}_${randomStr}`;
}

// 页面加载完成后执行（核心逻辑入口）
document.addEventListener('DOMContentLoaded', function () {
  // 跳转按钮事件
  const backToMainBtn = document.getElementById('backToMainBtn');
  const toPredictBtn = document.getElementById('toPredictBtn');
  const toFunc1Btn = document.getElementById('toFunc1Btn');

  if (backToMainBtn) backToMainBtn.addEventListener('click', () => window.location.href = '/main.html');
  if (toPredictBtn) toPredictBtn.addEventListener('click', () => window.location.href = '/predict.html');
  if (toFunc1Btn) toFunc1Btn.addEventListener('click', () => window.location.href = '/func1.html');

  // 初始化渲染容器样式
  const schoolContent = document.getElementById('schoolContent');
  if (schoolContent) {
    schoolContent.style.cssText = `
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      margin: 2rem 0;
      padding: 0 1rem;
    `;
  }

  // 加载并显示用户信息
  const Major = localStorage.getItem('userMajor') || '未设置';
  const college = localStorage.getItem('userCollege') || '未设置';
  const TargetSchool = localStorage.getItem('userTargetSchool') || '未设置';

  const majorDisplay = document.getElementById('majorDisplay');
  const collegeDisplay = document.getElementById('collegeDisplay');
  const targetSchoolDisplay = document.getElementById('targetSchoolDisplay');

  if (majorDisplay) majorDisplay.textContent = Major;
  if (collegeDisplay) collegeDisplay.textContent = college;
  if (targetSchoolDisplay) targetSchoolDisplay.textContent = TargetSchool;

  // 加载用户成绩表格
  loadScoresFromLocalStorage();

  // 绑定导出按钮事件
  const saveStudentsBtn = document.getElementById('saveStudentsBtn');
  if (saveStudentsBtn) {
    saveStudentsBtn.addEventListener('click', exportStudentsToExcel);
  } else {
    log('未找到导出按钮（saveStudentsBtn）', 'warning');
  }

  // 发起目标院校学生数据请求
  fetchTargetSchoolInfo();
});

// -------------------------- 核心修改1：适配新的API输入和输出结构 --------------------------
function fetchTargetSchoolInfo() {
  try {
    // 读取用户信息（与func1.js保持一致）
    const userScores = JSON.parse(localStorage.getItem('userScores') || '{}');
    const Major = localStorage.getItem('userMajor') || '';
    const college = localStorage.getItem('userCollege') || '';
    const TargetSchool = localStorage.getItem('userTargetSchool') || '';

    const requestData = {
      ...userScores,
      Major: Major,
      college: college,
      TargetSchool: TargetSchool,
      token: generateToken() // 添加随机生成的token
    };

    log('发送目标院校学生请求，新格式参数:', requestData);

    axios.post(API_CONFIG.TARGET_SCHOOL_API, requestData, {
      headers: { 'Content-Type': 'application/json' }
    })
      .then(response => {
        log('目标院校请求成功，后端原始返回:', response.data);

        // 关键修改：从 response.data.data 提取学生数组（匹配新输出结构）
        const rawStudents = response.data.data || [];
        // 关键修改：从 response.data.savedCollege 提取院校名称
        const targetCollege = response.data.savedCollege || '目标院校';
        log(`提取到【${targetCollege}】相关学生数量: ${rawStudents.length}`, 'info');

        // 抹除敏感字段（id和name）
        const processedStudents = rawStudents.map(student => {
          const { id, name, ...rest } = student; // 排除id和name
          return rest;
        });
        log(`处理敏感字段后的学生数量: ${processedStudents.length}`, 'info');

        // 截断数组，最多只取前10个学生
        const studentsToDisplay = processedStudents.slice(0, 10);
        log(`截断后将显示的学生数量: ${studentsToDisplay.length}`, 'info');

        // 渲染：传入学生数组 + 目标院校名称
        displayTargetSchoolInfo(studentsToDisplay, targetCollege);
      })
      .catch(error => {
        log('获取目标院校学生失败:', error, 'error');
        alert('获取目标院校相关学生信息失败，请查看控制台日志');
      });
  } catch (error) {
    log('获取目标院校学生过程出错:', error, 'error');
    alert('获取目标院校相关学生信息失败，请查看控制台日志');
  }
}

// -------------------------- 核心修改2：渲染逻辑不变，但数据源已更新 --------------------------
function displayTargetSchoolInfo(students, targetCollege) {
  const schoolContent = document.getElementById('schoolContent');
  if (!schoolContent) {
    log('未找到渲染容器（schoolContent）', 'error');
    return;
  }

  if (!Array.isArray(students) || students.length === 0) {
    schoolContent.innerHTML = `
      <div style="width:100%; text-align:center; color:#666; margin-bottom:1rem;">
        未找到【${targetCollege}】相关的学生信息
      </div>
    `;
    return;
  }

  schoolContent.innerHTML = '';

  // 1. 渲染目标院校标题
  const collegeTitle = document.createElement('div');
  collegeTitle.style.cssText = `
    width: 100%;
    margin-bottom: 1.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid #e0e0e0;
    font-size: 1.3rem;
    font-weight: 600;
    color: #1976d2;
  `;
  collegeTitle.textContent = `目标院校：${targetCollege}`;
  schoolContent.appendChild(collegeTitle);

  // 2. 循环渲染学生卡片
  students.forEach((student, index) => {
    const studentCard = document.createElement('div');
    studentCard.className = 'student-card';
    studentCard.style.cssText = `
      width: 30%;
      margin-bottom: 20px;
      border: 1px solid #e0e0e0;
      border-radius: 8px;
      padding: 1.2rem;
      box-shadow: 0 2px 4px rgba(0,0,0,0.05);
      background: #fff;
    `;

    studentCard.innerHTML = `
      <div style="font-size: 1.1rem; font-weight: 600; color: #1976d2; margin-bottom: 0.8rem;">
        相关学生 ${index + 1}
      </div>
      <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>GPA：</strong>${student.gpa ? student.gpa.toFixed(2) : '0'}</div>
      <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>CET4：</strong>${student.cet4 ? student.cet4.toFixed(0) : '0'}</div>
      <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>高等数学（上）：</strong>${student.math1 ? student.math1.toFixed(0) : '0'}</div>
      <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>高等数学（下）：</strong>${student.math2 ? student.math2.toFixed(0) : '0'}</div>
      <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>大学英语1：</strong>${student.english1 ? student.english1.toFixed(0) : '0'}</div>
      <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>原专业：</strong>${student.savedMajor || '未提供'}</div>
      <div style="line-height: 1.6;"><strong>录取院校：</strong>${student.savedCollege || '未提供'}</div>
    `;

    schoolContent.appendChild(studentCard);
  });

  log(`成功渲染【${targetCollege}】相关学生 ${students.length} 个`, 'info');
}

// -------------------------- 核心修改3：适配新的API输入格式 --------------------------
function exportStudentsToExcel() {
  try {
    const userScores = JSON.parse(localStorage.getItem('userScores') || '{}');
    const Major = localStorage.getItem('userMajor') || '软件工程';
    const college = localStorage.getItem('userCollege') || '人工智能与计算机学院';
    const TargetSchool = localStorage.getItem('userTargetSchool') || '清华大学';

    const requestData = {
      ...userScores,
      Major: Major,
      college: college,
      TargetSchool: TargetSchool,
      token: generateToken() // 添加随机生成的token
    };

    log('发送导出请求，新格式参数:', requestData);

    axios.post(API_CONFIG.EXPORT_STUDENTS_API, requestData, {
      headers: { 'Content-Type': 'application/json' },
      responseType: 'blob'
    })
      .then(response => {
        const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement('a');
        link.href = url;
        // 使用从localStorage获取的目标院校名称作为文件名
        link.setAttribute('download', `target_school_${userTargetSchool}_students.xlsx`);
        document.body.appendChild(link);
        link.click();
        link.parentNode.removeChild(link);
        window.URL.revokeObjectURL(url);
        alert(`【${userTargetSchool}】学生信息已成功导出！`);
      })
      .catch(error => {
        log('导出目标院校学生失败:', error, 'error');
        alert('导出目标院校学生信息失败，请查看控制台日志');
      });
  } catch (error) {
    log('导出目标院校学生过程出错:', error, 'error');
    alert('导出目标院校学生信息失败，请查看控制台日志');
  }
}

// -------------------------- 保留：加载用户成绩表格 --------------------------
function loadScoresFromLocalStorage() {
  try {
    const savedScores = localStorage.getItem('userScores');
    if (!savedScores) {
      log('localStorage中无保存的成绩数据', 'warning');
      return;
    }

    const scores = JSON.parse(savedScores);
    log('从localStorage加载的成绩:', scores);

    const gpaValue = document.getElementById('gpaValue');
    const cet4Value = document.getElementById('cet4Value');
    const math1Value = document.getElementById('math1Value');
    const math2Value = document.getElementById('math2Value');
    const english1Value = document.getElementById('english1Value');
    const english2Value = document.getElementById('english2Value');
    const english3Value = document.getElementById('english3Value');
    const english4Value = document.getElementById('english4Value');

    if (gpaValue) gpaValue.textContent = scores.gpa ? scores.gpa.toFixed(2) : '未设置';
    if (cet4Value) cet4Value.textContent = scores.cet4 ? scores.cet4.toFixed(0) : '未设置';
    if (math1Value) math1Value.textContent = scores.math1 ? scores.math1.toFixed(0) : '未设置';
    if (math2Value) math2Value.textContent = scores.math2 ? scores.math2.toFixed(0) : '未设置';
    if (english1Value) english1Value.textContent = scores.english1 ? scores.english1.toFixed(0) : '未设置';
    if (english2Value) english2Value.textContent = scores.english2 ? scores.english2.toFixed(0) : '未设置';
    if (english3Value) english3Value.textContent = scores.english3 ? scores.english3.toFixed(0) : '未设置';
    if (english4Value) english4Value.textContent = scores.english4 ? scores.english4.toFixed(0) : '未设置';

  } catch (error) {
    log('加载用户成绩失败:', error, 'error');
  }
}

// // 导入CSS文件
// import '../css/func2.css';
// // 导入axios库
// import axios from 'axios';

// // API配置 - 匹配后端地址
// const API_CONFIG = {
//   // TARGET_SCHOOL_API: 'http://192.168.209.178:8000/college',
//   TARGET_SCHOOL_API: 'http://localhost:8080/api/v1/students/temp-college',
//   EXPORT_STUDENTS_API: 'http://localhost:8080/api/v1/students/college/export',
// };

// // 开启调试日志（便于排查数据流转）
// const DEBUG_MODE = true;

// // 工具函数：日志记录
// function log(message, level = 'info') {
//   if (DEBUG_MODE) {
//     const timestamp = new Date().toISOString();
//     console[level === 'error' ? 'error' : 'log'](`[${timestamp}] [${level}] ${message}`);
//   }
// };

// // 页面加载完成后执行（核心逻辑入口）
// document.addEventListener('DOMContentLoaded', function () {
//   // 跳转按钮事件（保留原逻辑）
//   const backToMainBtn = document.getElementById('backToMainBtn');
//   const toPredictBtn = document.getElementById('toPredictBtn');
//   const toFunc1Btn = document.getElementById('toFunc1Btn');

//   if (backToMainBtn) backToMainBtn.addEventListener('click', () => window.location.href = '/main.html');
//   if (toPredictBtn) toPredictBtn.addEventListener('click', () => window.location.href = '/predict.html');
//   if (toFunc1Btn) toFunc1Btn.addEventListener('click', () => window.location.href = '/func1.html');

//   // 初始化渲染容器样式
//   const schoolContent = document.getElementById('schoolContent');
//   if (schoolContent) {
//     schoolContent.style.cssText = `
//       display: flex;
//       flex-wrap: wrap;
//       justify-content: space-between;
//       margin: 2rem 0;
//       padding: 0 1rem;
//     `;
//   }

//   // 加载并显示用户信息（保留原逻辑）
//   const Major = localStorage.getItem('userMajor') || '未设置';
//   const college = localStorage.getItem('userCollege') || '未设置';
//   const TargetSchool = localStorage.getItem('userTargetSchool') || '未设置';

//   const majorDisplay = document.getElementById('majorDisplay');
//   const collegeDisplay = document.getElementById('collegeDisplay');
//   const targetSchoolDisplay = document.getElementById('targetSchoolDisplay');

//   if (majorDisplay) majorDisplay.textContent = Major;
//   if (collegeDisplay) collegeDisplay.textContent = college;
//   if (targetSchoolDisplay) targetSchoolDisplay.textContent = TargetSchool;

//   // 加载用户成绩表格（保留原逻辑）
//   loadScoresFromLocalStorage();

//   // 绑定导出按钮事件
//   const saveStudentsBtn = document.getElementById('saveStudentsBtn');
//   if (saveStudentsBtn) {
//     saveStudentsBtn.addEventListener('click', exportStudentsToExcel);
//   } else {
//     log('未找到导出按钮（saveStudentsBtn）', 'warning');
//   }

//   // 发起目标院校学生数据请求
//   fetchTargetSchoolInfo();
// });

// // -------------------------- 核心修改1：适配后端新结构，从 response.data.students 提取学生数组 --------------------------
// function fetchTargetSchoolInfo() {
//   try {
//     // 从localStorage获取目标院校信息
//     const targetSchool = localStorage.getItem('userTargetSchool') || '';
//     log('待发送的TargetSchool字段:', targetSchool);

//     // 构建请求数据：仅包含 TargetSchool 字段
//     const requestData = {
//       TargetSchool: targetSchool // 核心：发送 TargetSchool 字段
//     };

//     log('发送目标院校学生请求，参数:', requestData);

//     axios.post(API_CONFIG.TARGET_SCHOOL_API, requestData, {
//       headers: { 'Content-Type': 'application/json' }
//     })
//       .then(response => {
//         log('目标院校请求成功，模型原始返回:', response.data);


//         // 关键修改：从 response.data.students 提取学生数组（匹配新结构）
//         const rawStudents = response.data.students || [];
//         const targetCollege = response.data.college || '目标院校'; // 提取后端返回的院校名称
//         log(`提取到【${targetCollege}】相关学生数量: ${rawStudents.length}`, 'info');

//         // 抹除敏感字段（id和name），不修改原数据
//         const processedStudents = rawStudents.map(student => {
//           const { id, name, ...rest } = student; // 排除id和name
//           return rest;
//         });

//         log(`步骤2：处理敏感字段后的学生数量: ${processedStudents.length}`, 'info');
//         // log('处理后的数据（不含id和name）:', processedStudents[0] || '无数据');  暂时注释

//         // --- 新增代码：截断数组，最多只取前10个学生 ---
//         const studentsToDisplay = processedStudents.slice(0, 10);
//         log(`截断后将显示的学生数量: ${studentsToDisplay.length}`, 'info');

//         // 渲染：传入学生数组 + 目标院校名称
//         displayTargetSchoolInfo(studentsToDisplay, targetCollege);
//       })
//       .catch(error => {
//         log('获取目标院校学生失败:', error, 'error');
//         alert('获取目标院校相关学生信息失败，请查看控制台日志');
//       });
//   } catch (error) {
//     log('获取目标院校学生过程出错:', error, 'error');
//     alert('获取目标院校相关学生信息失败，请查看控制台日志');
//   }
// }

// // -------------------------- 核心修改2：新增院校标题显示，适配新数据渲染 --------------------------
// function displayTargetSchoolInfo(students, targetCollege) {
//   const schoolContent = document.getElementById('schoolContent');
//   if (!schoolContent) {
//     log('未找到渲染容器（schoolContent）', 'error');
//     return;
//   }

//   // 处理无数据场景
//   if (!Array.isArray(students) || students.length === 0) {
//     schoolContent.innerHTML = `
//       <div style="width:100%; text-align:center; color:#666; margin-bottom:1rem;">
//         未找到【${targetCollege}】相关的学生信息
//       </div>
//     `;
//     return;
//   }

//   // 清空容器旧内容，先添加“目标院校标题”
//   schoolContent.innerHTML = '';

//   // 1. 渲染目标院校标题（让用户明确当前展示的院校）
//   const collegeTitle = document.createElement('div');
//   collegeTitle.style.cssText = `
//     width: 100%;
//     margin-bottom: 1.5rem;
//     padding-bottom: 0.5rem;
//     border-bottom: 1px solid #e0e0e0;
//     font-size: 1.3rem;
//     font-weight: 600;
//     color: #1976d2;
//   `;
//   collegeTitle.textContent = `目标院校：${targetCollege}`;
//   schoolContent.appendChild(collegeTitle);

//   // 2. 循环渲染学生卡片（保留原样式，字段匹配后端新结构）
//   students.forEach((student, index) => {
//     const studentCard = document.createElement('div');
//     studentCard.className = 'student-card';
//     studentCard.style.cssText = `
//       width: 30%;
//       margin-bottom: 20px;
//       border: 1px solid #e0e0e0;
//       border-radius: 8px;
//       padding: 1.2rem;
//       box-shadow: 0 2px 4px rgba(0,0,0,0.05);
//       background: #fff;
//     `;

//     // 卡片内容：匹配后端返回的字段（cet4、math1、savedMajor等）
//     studentCard.innerHTML = `
//       <div style="font-size: 1.1rem; font-weight: 600; color: #1976d2; margin-bottom: 0.8rem;">
//         相关学生 ${index + 1}
//       </div>
//       <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>GPA：</strong>${student.gpa ? student.gpa.toFixed(2) : '0'}</div>
//       <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>CET4：</strong>${student.cet4 ? student.cet4.toFixed(0) : '0'}</div>
//       <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>高等数学（上）：</strong>${student.math1 ? student.math1.toFixed(0) : '0'}</div>
//       <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>高等数学（下）：</strong>${student.math2 ? student.math2.toFixed(0) : '0'}</div>
//       <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>大学英语1：</strong>${student.english1 ? student.english1.toFixed(0) : '0'}</div>
//       <div style="line-height: 1.6; margin-bottom: 0.5rem;"><strong>原专业：</strong>${student.savedMajor || '未提供'}</div>
//       <div style="line-height: 1.6;"><strong>录取院校：</strong>${student.savedCollege || '未提供'}</div>
//     `;

//     schoolContent.appendChild(studentCard);
//   });

//   log(`成功渲染【${targetCollege}】相关学生 ${students.length} 个`, 'info');
// }

// // -------------------------- 保留：导出Excel功能（如需适配新结构可微调，当前无需修改） --------------------------
// function exportStudentsToExcel() {
//   try {
//     const targetSchool = localStorage.getItem('userTargetSchool') || '清华大学';
//     const requestData = {
//       TargetSchool: targetSchool // 保持与请求一致的字段
//     };

//     log('发送导出请求，参数:', requestData);

//     axios.post(API_CONFIG.EXPORT_STUDENTS_API, requestData, {
//       headers: { 'Content-Type': 'application/json' },
//       responseType: 'blob'
//     })
//       .then(response => {
//         const url = window.URL.createObjectURL(new Blob([response.data]));
//         const link = document.createElement('a');
//         link.href = url;
//         link.setAttribute('download', `target_school_${targetSchool}_students.xlsx`); // 文件名包含院校，更清晰
//         document.body.appendChild(link);
//         link.click();
//         link.parentNode.removeChild(link);
//         window.URL.revokeObjectURL(url);
//         alert(`【${targetSchool}】学生信息已成功导出！`);
//       })
//       .catch(error => {
//         log('导出目标院校学生失败:', error, 'error');
//         alert('导出目标院校学生信息失败，请查看控制台日志');
//       });
//   } catch (error) {
//     log('导出目标院校学生过程出错:', error, 'error');
//     alert('导出目标院校学生信息失败，请查看控制台日志');
//   }
// }

// // -------------------------- 保留：加载用户成绩表格 --------------------------
// function loadScoresFromLocalStorage() {
//   try {
//     const savedScores = localStorage.getItem('userScores');
//     if (!savedScores) {
//       log('localStorage中无保存的成绩数据', 'warning');
//       return;
//     }

//     const scores = JSON.parse(savedScores);
//     log('从localStorage加载的成绩:', scores);

//     const gpaValue = document.getElementById('gpaValue');
//     const cet4Value = document.getElementById('cet4Value');
//     const math1Value = document.getElementById('math1Value');
//     const math2Value = document.getElementById('math2Value');
//     const english1Value = document.getElementById('english1Value');
//     const english2Value = document.getElementById('english2Value');
//     const english3Value = document.getElementById('english3Value');
//     const english4Value = document.getElementById('english4Value');

//     if (gpaValue) gpaValue.textContent = scores.gpa ? scores.gpa.toFixed(2) : '未设置';
//     if (cet4Value) cet4Value.textContent = scores.cet4 ? scores.cet4.toFixed(0) : '未设置';
//     if (math1Value) math1Value.textContent = scores.math1 ? scores.math1.toFixed(0) : '未设置';
//     if (math2Value) math2Value.textContent = scores.math2 ? scores.math2.toFixed(0) : '未设置';
//     if (english1Value) english1Value.textContent = scores.english1 ? scores.english1.toFixed(0) : '未设置';
//     if (english2Value) english2Value.textContent = scores.english2 ? scores.english2.toFixed(0) : '未设置';
//     if (english3Value) english3Value.textContent = scores.english3 ? scores.english3.toFixed(0) : '未设置';
//     if (english4Value) english4Value.textContent = scores.english4 ? scores.english4.toFixed(0) : '未设置';

//   } catch (error) {
//     log('加载用户成绩失败:', error, 'error');
//   }
// }